home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 050 / madtrb17.arc / SPELLUPD.PAS < prev    next >
Pascal/Delphi Source File  |  1985-06-14  |  3KB  |  97 lines

  1. PROGRAM SPELLUPD;  { SPELL CHECKER DICTIONARY UPDATE }
  2. {
  3. Update the file SPELLER.LIS (spelling dictionary) by adding words 
  4. contained in an alphabetical file "filename.MIS".  SPELLUPD.COM and
  5. SPELLER.LIS should be in the current directory. The prior file SPELLER.LIS
  6. is renamed to SPELLER.LI$ and a new SPELLER.LIS is created.
  7. }
  8. TYPE
  9.     FILES = text;
  10.     WORDTYP = string[24];
  11.  
  12. VAR
  13.     SRCNAME : string[36]; { DOS drive, path and filename of list to add.}
  14.     I : integer;
  15.     OLDWORD, UPWORD : WORDTYP;
  16.     OLDSPELL, NEWSPELL, SPELLUP : FILES;
  17.     OLDLAST : boolean;
  18.  
  19. PROCEDURE FINISH (var FILNAME : FILES);
  20. { GLOBAL file NEWSPELL is finished by adding the remaining
  21. words from FILENAME after adding the word from global variable
  22. OLDWORD.}
  23.  
  24. var
  25.     WORD : string[16];
  26.  
  27. begin
  28.     if OLDLAST then Writeln (NEWSPELL, UPWORD) else
  29.        Writeln (NEWSPELL, OLDWORD);
  30.     while not Eof (FILNAME) do begin
  31.        Readln (FILNAME, WORD);
  32.        Writeln (NEWSPELL, WORD);
  33.     end;
  34. end; { FINNISH }
  35.  
  36. begin {*************** MAIN PROGRAM *******************}
  37.  
  38. ClrScr;
  39. if ParamCount = 0 then begin
  40.     GotoXY (1,10);
  41.     Writeln ('Enter the fully qualified name of the file');
  42.     Writeln ('where the list of words to be added to SPELLER.LIS');
  43.     Writeln ('is located (eg: d:path\name.MIS)');
  44.     Writeln;
  45.     Readln (SRCNAME);
  46.     ClrScr;
  47.     end
  48. else SRCNAME := ParamStr (1);
  49. GotoXY (10,12);
  50. Write ('Opening file :  ');
  51. GotoXY (26,12);
  52. Write (SRCNAME);
  53. Assign (SPELLUP, SRCNAME);
  54. Reset (SPELLUP);
  55. Assign (OLDSPELL, 'SPELLER.LI$');
  56. {$I-} Erase (OLDSPELL) {$I+};
  57. I := IOResult;
  58. if (I<>1) and (I<>0) then begin
  59.    writeln;
  60.    writeln ('Something is wrong, I can''t write the new file.');
  61.    writeln ('The disk is probably write protected or else the');
  62.    writeln ('file SPELLER.LI$ is locked.');
  63.    writeln ('I/O Error number is ',I,'.  Aborting.');
  64.    exit;
  65.    end;
  66. Assign (OLDSPELL, 'SPELLER.LIS');
  67. Rename (OLDSPELL, 'SPELLER.LI$');
  68. GotoXY (26,12);
  69. Write ('SPELLER.LI$                         ');
  70. Reset (OLDSPELL);
  71. GotoXY (26,12);
  72. Write ('SPELLER.LIS                        ');
  73. Assign (NEWSPELL, 'SPELLER.LIS');
  74. ReWrite (NEWSPELL);
  75. GotoXY (37,16);
  76. Write ('UPDATING');
  77. Readln (OLDSPELL, OLDWORD);
  78. OLDLAST := false;
  79. repeat
  80.     if OLDLAST then Readln (OLDSPELL, OLDWORD)
  81.        else Readln (SPELLUP, UPWORD);
  82.     if OLDWORD < UPWORD then begin
  83.        Writeln (NEWSPELL, OLDWORD);
  84.        OLDLAST := true;
  85.     end
  86.     else begin
  87.        if OLDWORD <> UPWORD then Writeln (NEWSPELL, UPWORD);
  88.        OLDLAST := false;
  89.     end;
  90. until Eof (OLDSPELL) or (Eof (SPELLUP) and not OLDLAST);
  91. if Eof (OLDSPELL) then FINISH (SPELLUP) else FINISH (OLDSPELL);
  92. Close (NEWSPELL);
  93. Close (SPELLUP);
  94. Close (OLDSPELL);
  95. End.  
  96. 
  97.